package OOP;


public class OOPDemo {

    // 将枚举定义移到类的顶层


    static class Person {
        // 实例字段（成员变量）
        // 未初始化时的默认值：
        String name; // 引用类型默认null
        int age;     // 整型默认0
        boolean isStudent; // 布尔型默认false

        // 无参构造方法（默认构造器）
        public Person() {
            // 字段保持默认值
        }

        // 带参构造方法（全字段初始化）
        public Person(String name, int age, boolean isStudent) {
            this.name = name;       // this指代当前实例
            this.age = age;
            this.isStudent = isStudent;
        }

        // 带部分参数的构造方法（方法重载）
        public Person(String name, int age) {
            this(name, age, false); // 调用全参构造方法
        }

        // 实例方法：展示对象信息
        public void introduce() {
            String status = isStudent ? "学生" : "非学生";
            System.out.printf("[%s] 姓名：%s，年龄：%d%n", status, name, age);
        }
    }

    public static void classAndInstanceExample() {
        // 演示1：使用全参构造方法
        Person alice = new Person("Alice", 25, true);
        alice.introduce(); // 输出：[学生] 姓名：Alice，年龄：25

        // 演示2：使用双参构造方法
        Person bob = new Person("Bob", 30);
        bob.introduce();   // 输出：[非学生] 姓名：Bob，年龄：30

        // 演示3：使用无参构造方法（展示默认值）
        Person unknown = new Person();
        System.out.println("\n默认值演示：");
        System.out.println("姓名：" + unknown.name);    // null
        System.out.println("年龄：" + unknown.age);     // 0
        System.out.println("是否学生：" + unknown.isStudent); // false
    }




}
